In the context of memory systems, deduplication refers to a technique for reducing storage needs by eliminating redundant data. Only one unique instance of a data is actually retained on a storage medium, such as a solid-state drive (SSD) and a hard disk drive (HDD). Redundant data is replaced with a pointer to the unique instance of the data.
In-line memory deduplication schemes for a deduplicated memory can provide capacity benefits while reducing the cost-per-bit compared to a non-deduplicated memory. Conventional memory deduplication schemes employ a central processing unit (CPU)-centric approach where a deduplication engine is integrated with a CPU and/or a memory controller (MC) of a host computer. These memory deduplication schemes often use a simple multiple-way hash array for implementing a deduplication algorithm. As a hash array fills up, data can be placed in a non-deduplicated overflow region, reducing deduplication levels. Further, a high deduplication ratio can potentially decrease consumption of the memory components of a deduplicated memory system.